import http from '@/utils/http';

/**
 * 加入购物车
 */
export interface CartData {
  /**
   * 数量
   */
  count: number;
  /**
   * SKUID
   */
  skuId: string;
}

/**
 * 加入购物车
 */
export function addCart(data: CartData) {
  return http({
    url: '/member/cart',
    method: 'POST',
    data,
  });
}

/**
 * 购物车商品数据信息
 */
export interface CartGoodsItem {
  /**
   * 属性文字，例如“颜色:瓷白色 尺寸：8寸”
   */
  attrsText: string;
  /**
   * 数量
   */
  count: number;
  /**
   * 折扣信息
   */
  discount: number;
  /**
   * SPUID
   */
  id: string;
  /**
   * 是否收藏
   */
  isCollect: boolean;
  /**
   * 是否为有效商品
   */
  isEffective: boolean;
  /**
   * 商品名称
   */
  name: string;
  /**
   * 当前的价格
   */
  nowPrice: number;
  /**
   * 图片
   */
  picture: string;
  /**
   * 加入时价格
   */
  price: number;
  /**
   * 是否选中
   */
  selected: boolean;
  /**
   * SKUID
   */
  skuId: string;
  /**
   * 库存
   */
  stock: number;
}
// 获取购物车列表
export const getCartGoodsList = () => {
  return http<CartGoodsItem[]>({
    url: '/member/cart',
    method: 'GET',
  });
};

/**
 * 删除/清空购物车商品参数
 */
export interface DeleteCartGoodsData {
  /**
   * 是否清空，默认否
   */
  clearAll?: boolean;
  /**
   * 是否清空无效商品，默认否
   */
  clearInvalid?: boolean;
  /**
   * SKUID集合
   */
  ids: string[];
}

export const delCartGoods = (data: DeleteCartGoodsData) => {
  return http({
    url: '/member/cart',
    method: 'DELETE',
    data,
  });
};

/**
 * 修改购物车商品参数
 */
export interface UpdateCartGoodsData {
  /**
   * 数量
   */
  count?: number;
  /**
   * 是否选中
   */
  selected?: boolean;
}

export const updateCartGoodsCount = (
  skuId: string,
  data: UpdateCartGoodsData
) => {
  return http({
    url: `/member/cart/${skuId}`,
    method: 'PUT',
    data,
  });
};

/**
 * 购物车全选/取消全选
 */
export interface UpdateAllSelectedData {
  /**
   * skuId集合
   */
  ids?: string[];
  /**
   * 是否选中
   */
  selected: boolean;
}

export const updateAllSelected = (data: UpdateAllSelectedData) => {
  return http({
    url: '/member/cart/selected',
    method: 'PUT',
    data,
  });
};
